﻿using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Data.SqlClient;

/// <summary>
/// Descripción breve de BDAdministradores
/// </summary>
public class GestionAdministradores
{

    static GestionAdministradores instance;
    private GestionAdministradores()
    {
    }
    public static GestionAdministradores getInstance()
    {
        if (instance == null)
        {
            instance = new GestionAdministradores();
        }
        return instance;
    }
    public Administrador validar(String nick, String password)
    {
        if (nick == null || password == null || nick.Equals("") || password.Equals(""))
        {
            return null;
        }
        else
        {
            Administrador administrador = null;
            SqlConnection con = Conexion.getConexion();
            con.Open();
            try
            {
                SqlDataReader myReader = null;
                SqlCommand myCommand = new SqlCommand("select * from Administrador where Alias='" + nick + "'", con);
                myReader = myCommand.ExecuteReader();
                if (myReader.Read())
                {
                    if (!password.Equals(myReader["Password"]))
                    {
                        return null;
                    }
                    else
                    {
                        administrador = new Administrador();
                        administrador.setIdAdministrador(myReader["IdAdministrador"].ToString());
                        administrador.setAlias(myReader["Alias"].ToString());
                        DatosPersonales dp = new DatosPersonales();
                        dp.apellido1 = myReader["Apellido1"].ToString();
                        dp.apellido2 = myReader["Apellido2"].ToString();
                        dp.nombre = myReader["Nombre"].ToString();
                        administrador.setDatosPersonales(dp);
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e.ToString());
                return null;
            }
            con.Close();
            return administrador;
        }
    }


    public bool crearAdministrador(Administrador a)
    {
        if (a != null)
        {
            SqlConnection con = Conexion.getConexion();
            con.Open();
            SqlCommand comando = new SqlCommand("INSERT INTO [casino].[dbo].[Administrador]" +
           "([Alias],[Password],[Nombre],[Apellido1],[Apellido2],[Direccion],[Localidad],[Telefono],[Mail],[FechaNaci],[Sexo],[DNI],[FechaBaja])" +
           "VALUES" +
           "('" + a.getAlias() + "'" +
           ",'" + a.getPassword() + "'" +
           ",'" + a.getDatosPersonales().nombre + "'" +
           ",'" + a.getDatosPersonales().apellido1 + "'" +
           ",'" + a.getDatosPersonales().apellido2 + "'" +
           ",'" + a.getDatosPersonales().direccion + "'" +
           ",'" + a.getDatosPersonales().ciudad + "'" +
           ",'" + a.getDatosPersonales().telefono + "'" +
           ",'" + a.getDatosPersonales().correo + "'" +
           ",'" + a.getDatosPersonales().fechaNacimiento + "'" +
           ",'" + a.getDatosPersonales().sexo + "'" +
           ",'" + a.getDatosPersonales().dni + "'" +
           ",null)", con);

            int i = comando.ExecuteNonQuery();
            con.Close();

        }
        else
        {
            return false;
        }
        return true;
    }
    public Administrador dameAdministradorID(String id)
    {
        SqlConnection con = Conexion.getConexion();
        Administrador admin = new Administrador();
        DatosPersonales dp = new DatosPersonales();
        con.Open();
        try
        {

            SqlDataReader myReader = null;
            SqlCommand myCommand = new SqlCommand("select * from Administrador where IdAdministrador='" + id + "'", con);
            myReader = myCommand.ExecuteReader();
            if (myReader.Read())
            {
                admin.setAlias(myReader["Alias"].ToString());
                admin.setFechaBaja(myReader["FechaBaja"].ToString());
                admin.setIdAdministrador(myReader["IdAdministrador"].ToString());
                admin.setPassword(myReader["Password"].ToString());
                dp.apellido1 = myReader["Apellido1"].ToString();
                dp.apellido2 = myReader["Apellido2"].ToString();
                dp.nombre = myReader["Nombre"].ToString();
                string c = myReader["Sexo"].ToString();
                char a = c[0];
                dp.sexo = a;
                dp.dni = myReader["DNI"].ToString();
                dp.direccion = myReader["Direccion"].ToString();
                dp.correo = myReader["Mail"].ToString();
                dp.telefono = myReader["Telefono"].ToString();
                dp.ciudad = myReader["Localidad"].ToString();
                dp.fechaNacimiento = myReader["FechaNaci"].ToString();
                admin.setDatosPersonales(dp);
            }
        }
        catch (Exception e)
        {
            Console.WriteLine(e.ToString());
            return null;
        }
        con.Close();
        return admin;
    }
    public Administrador dameAdministradorNick(String nick)
    {
        SqlConnection con = Conexion.getConexion();
        Administrador admin = new Administrador();
        DatosPersonales dp = new DatosPersonales();
        con.Open();
        try
        {
            SqlDataReader myReader = null;
            SqlCommand myCommand = new SqlCommand("select * from Administrador where Alias='" + nick + "'", con);
            myReader = myCommand.ExecuteReader();
            if (myReader.Read())
            {
                admin.setAlias(myReader["Alias"].ToString());
                admin.setFechaBaja(myReader["FechaBaja"].ToString());
                admin.setIdAdministrador(myReader["IdAdministrador"].ToString());
                admin.setPassword(myReader["Password"].ToString());
                dp.apellido1 = myReader["Apellido1"].ToString();
                dp.apellido2 = myReader["Apellido2"].ToString();
                dp.nombre = myReader["Nombre"].ToString();
                string c = myReader["Sexo"].ToString();
                char a = c[0];
                dp.sexo = a;
                dp.dni = myReader["DNI"].ToString();
                dp.direccion = myReader["Direccion"].ToString();
                dp.correo = myReader["Mail"].ToString();
                dp.telefono = myReader["Telefono"].ToString();
                dp.ciudad = myReader["Localidad"].ToString();
                dp.fechaNacimiento = myReader["FechaNaci"].ToString();
                admin.setDatosPersonales(dp);
            }
        }
        catch (Exception e)
        {
            Console.WriteLine(e.ToString());
            return null;
        }
        con.Close();
        return admin;
    }
    public bool modificarAdministrador(Administrador a)
    {
        if (a != null)
        {
            SqlConnection con = Conexion.getConexion();
            con.Open();
            DatosPersonales dp = a.getDatosPersonales();
            String SQL = "UPDATE [casino].[dbo].[Administrador]" +
               " SET [Alias] ='" + a.getAlias() + "'" +
                  ",[Nombre] ='" + dp.nombre + "'" +
                  ",[Apellido1] ='" + dp.apellido1 + "'" +
                  ",[Apellido2] = '" + dp.apellido2 + "'" +
                  ",[Direccion] = '" + dp.direccion + "'" +
                  ",[Localidad] = '" + dp.ciudad + "'" +
                  ",[Telefono] = '" + dp.telefono + "'" +
                  ",[Mail] = '" + dp.correo + "'" +
                  ",[FechaNaci] = '" + dp.fechaNacimiento + "'" +
                  ",[Sexo] = '" + dp.sexo + "'" +
                  ",[DNI] = '" + dp.dni + "'" +
             "WHERE IdAdministrador='" + a.getIdAdministrador() + "'";
            SqlCommand comando = new SqlCommand(SQL, con);

            comando.ExecuteNonQuery();
            con.Close();

        }
        else
        {
            return false;
        }
        return true;
    }
    public bool eliminarUsuario(Administrador u)
    {
        if (u != null)
        {
            SqlConnection con = Conexion.getConexion();
            con.Open();
            String SQL = "UPDATE [casino].[dbo].[Administrador]" +
               " SET [FechaBaja]='" + DateTime.Now.ToShortDateString() + "'" +
               "WHERE IdAdmin='" + u.getIdAdministrador() + "'";
            SqlCommand comando = new SqlCommand(SQL, con);

            comando.ExecuteNonQuery();
            con.Close();

        }
        else
        {
            return false;
        }
        return true;

    }
}
